package cn.hsa.fqz.task.service;

import cn.hsa.fqz.common.utils.page.BasePage;
import cn.hsa.fqz.common.utils.page.PageData;
import cn.hsa.fqz.task.entity.TTaskSqlExecute;
import cn.hsa.fqz.task.service.dto.LoginUserDTO;
import cn.hsa.fqz.task.service.dto.TaskSqlExecuteConfigDTO;
import cn.hsa.hsaf.core.framework.web.WrapperResponse;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

public interface TTaskSqlExecuteService {


    Integer insertTaskSqlExecute(TaskSqlExecuteConfigDTO taskSqlExecuteConfigDTO);

    Integer updateTaskSqlExecute(TaskSqlExecuteConfigDTO taskSqlExecuteConfigDTO);

    Integer deleteTaskSqlExecute(Integer id);

    Integer updateTaskSqlExecuteStatus(Integer id,Integer status);
    /**
     * 根据菜单查询可执行脚本
     * @param menuId
     * @return
     */
     TTaskSqlExecute getOneByMenuId(String menuId);
    /**
     * 根据菜单查询可执行脚本
     * @param taskId
     * @return
     */
     List<TTaskSqlExecute> getMultiSQLByTaskId(LoginUserDTO dto, String taskId);

    /**
     * 根据菜单查询可执行脚本
     * @param taskId
     * @return
     */
    List<TTaskSqlExecute> getClueSqlExecuteBytTaskId(String taskId);

    /**
     * 查询列表
     * @return
     */
     List<Map<String, Object>> getList(String host,Integer port,String passwd,String sql);

    /**
     * 分页查询
     * @return
     */
    PageData<Map<String, Object>> getPageResult(String host,Integer port,String passwd,String sql, int pageNum, int pageSize);


    /**
     * 获取用户后重定向
     * @param url
     * @return
     */
    String genMonitorUrl(LoginUserDTO dto,String url);
    /**
     * 执行查询逻辑
     * @param execute
     * @return
     */
    WrapperResponse<Object> startTaskSqlExecute(LoginUserDTO dto,String host,Integer port,String passwd,TTaskSqlExecute execute, BasePage page);

    void startTaskSqlExecuteAndExport(LoginUserDTO dto, String host,Integer port, String passwd, TTaskSqlExecute execute, OutputStream os, String fileName);

    WrapperResponse<Object> executeCKDemo(String host,Integer port,String passwd,String taskId);

    void exportClue(LoginUserDTO loginUser, String ckHost,Integer port, String ckPasswd, String taskCode,OutputStream os);
}
